这里介绍快速排序使用到的两种分割算法。
对于快速排序而言,先选定一个枢轴元素,以枢轴元素为基准比枢轴元素小的元素放在枢轴元素的左边,比枢轴元素大的元素放在枢轴元素的右边。这就是一次分割过程。
1,先介绍第一种分割算法
该算法是《算法导论》中描述的PARTITION过程。这个分割的思想应该有很多应用,比如应用到快速排序中,再比如应用到如果获取中位数(或者给定一组数,找出其中第K小的元素)
该分割算法的思想是,始终选定数组中的最后一个元素作为枢轴元素,设置指针 i 初始值为数组起始元素索引减1,设置指针 j 由数组下标从低到高扫描整个数组,若遇到的元素小于枢轴元素则 i 自增然后交换 i 数组元素的值和i 数组元素的值;若遇到的元素大于 枢轴元素则i指针不动,只有j指针自增。此算法的时间复杂度为O(n),空间复杂度为O(1)。
具体